/**
 * Sistem Informasi Penjualan
 * @author Kelompok 1
 * Ligar Sekar Wangi
 * Tri Maryani
 * Winda Rahadyan
 * TIF/IV/A
 */


import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.sql.*;

/* Menurunkan Class Pelanggan dari JInternalFrame */
public class Pelanggan extends JInternalFrame implements ActionListener, FocusListener 
{
	
	/* Deklarasi jpPelanggan1 dari objek JPanel */
	private JPanel 		jpPelanggan1 		= new JPanel ();
	
	/* Deklarasi data Label dari Objek JLabel */
	private JLabel 		lblKode_Pelanggan	= new JLabel ("Kode Pelanggan   "), 
						lblNama_Pelanggan	= new JLabel ("Nama Pelanggan   "), 
						lblAlt_Pelanggan	= new JLabel ("Alamat Pelanggan "), 
						lblTlp_Pelanggan	= new JLabel ("Telepon          "); 
	
	/* Deklarasi data Text dari Objek JTextField */					
	private JTextField 	txtKode_Pelanggan	= new JTextField (), 
						txtNama_Pelanggan	= new JTextField (),
						txtAlt_Pelanggan 	= new JTextField (),
						txtTlp_Pelanggan	= new JTextField (); 
						
	/* Deklarasi data Button dari Objek JButton */						
	private JButton 	btnAdd  			= new JButton (), 
						btnEdit				= new JButton (), 
						btnDelete			= new JButton (), 
						btnKosong			= new JButton ();	
	
	Pelanggan () 
		{
		/* super(Judul, UkuranFrame, TombolClose, TombolMaksimum, TombolMinimum)*/
		super ("Form Pelanggan", false, true, false, true);
		setSize (560, 360);

		jpPelanggan1.setLayout (null);

			
 		/* Meletakkan Objek Label di Container */
		lblKode_Pelanggan.setBounds (20, 20, 115, 25);
	    lblNama_Pelanggan.setBounds (20, 50, 110, 25);
		lblAlt_Pelanggan.setBounds (20, 80, 110, 25);
		lblTlp_Pelanggan.setBounds (20, 110, 115, 25);
		
        /* Meletakkan Objek Text di Container */
		txtKode_Pelanggan.setBounds (125, 20, 100, 25);
		txtNama_Pelanggan.setBounds (125, 50, 320, 25);
		txtAlt_Pelanggan.setBounds (125, 80, 320, 25);
		txtTlp_Pelanggan.setBounds (125, 110, 100, 25);
		 		
		/* Meletakkan Objek Button di Container */
		btnAdd.setBounds (400, 175, 85, 25);
		btnAdd.setLabel("Add");	
		btnEdit.setBounds (400, 205, 85, 25);
		btnEdit.setLabel("Edit");
		btnDelete.setBounds (400, 235, 85, 25);
		btnDelete.setLabel("Delete");
		btnKosong.setBounds (400, 265, 85, 25);
	    btnKosong.setLabel("Bersih");	
	

		/* Format Bilangan input pada textfield */
		txtTlp_Pelanggan.addKeyListener (new KeyAdapter() 
			{
			public void keyTyped (KeyEvent ke) 
				{
				char c = ke.getKeyChar ();
				if (!((Character.isDigit (c) || (c == KeyEvent.VK_BACK_SPACE)))) 
					{
					getToolkit().beep (); ke.consume ();
      				}
    			}
  		    } );
		
		/* Mengatur objek Button aktif dan tidak */
		btnAdd.setEnabled(false);		
		btnEdit.setEnabled(false);			
		btnDelete.setEnabled(false);			
		btnKosong.setEnabled(true);			

		/* Menambah Listener pada Objek, untuk dapat berinteraksi*/
		txtKode_Pelanggan.addFocusListener (this);
		btnAdd.addActionListener (this);
		btnEdit.addActionListener (this);
		btnDelete.addActionListener (this);
		btnKosong.addActionListener (this);

		//Meletakkan Objek Pada Panel */
		jpPelanggan1.add (lblKode_Pelanggan);		
		jpPelanggan1.add (txtKode_Pelanggan);
		jpPelanggan1.add (lblNama_Pelanggan);		
		jpPelanggan1.add (txtNama_Pelanggan);
		jpPelanggan1.add (lblAlt_Pelanggan);	
		jpPelanggan1.add (txtAlt_Pelanggan); 
		jpPelanggan1.add (lblTlp_Pelanggan);		
		jpPelanggan1.add (txtTlp_Pelanggan); 		
		jpPelanggan1.add (btnAdd);	
		jpPelanggan1.add (btnEdit); 	
		jpPelanggan1.add (btnDelete);	
		jpPelanggan1.add (btnKosong);

		/* Meletakkan Panel Ke Frame */
		getContentPane().add (jpPelanggan1);
		
		/* Menampilkan frame ke layar */
		setVisible (true);
	}

    // Fungsi untuk memeriksa TxtKode_Pelanggan bila Ditinggalkan */
	public void focusGained (FocusEvent fe) 
		{ 
		}
	public void focusLost (FocusEvent fe) 
		{
		if (txtKode_Pelanggan.getText().equals ("")) 
			{ 
			}
		else 
			{
			Cari();
		    }
	    }

	/* Fungsi Jika Klik Button */
	public void actionPerformed (ActionEvent ae) 
		{
		Object obj = ae.getSource();
		if (obj == btnAdd) 	
			{ 
			Add();	
			}				
		if (obj == btnEdit) 	
			{ 
			Edit(); 	
			}
		if (obj == btnDelete) 	
			{ 
			Delete(); 	
			}
		Kosong();
	    }
	 
	/* Mencari Kode Pelanggan di Tabel Pelanggan */
	void Cari()
		{
		try	
			{
	   		Connect ObjKoneksi1 = new Connect();
	   		Connection con1 = ObjKoneksi1.OpenConnect();
	   		Statement st1 = con1.createStatement();
	   		String sql1 = "SELECT * FROM Pelanggan WHERE Kode_Pelanggan ='" + txtKode_Pelanggan.getText () + "'";
	   		ResultSet rs1 = st1.executeQuery(sql1);
			if(rs1.next())	
				{
				/* Jika Ada Kode Pelanggan di Tabel Pelanggan */
				txtKode_Pelanggan.setText (rs1.getString ("Kode_Pelanggan"));
				txtNama_Pelanggan.setText (rs1.getString ("Nama_Pelanggan"));
				txtAlt_Pelanggan.setText (rs1.getString("Alt_Pelanggan"));
				txtTlp_Pelanggan.setText (rs1.getString ("Tlp_Pelanggan"));
				btnAdd.setEnabled(false);
				btnEdit.setEnabled(true);
				btnDelete.setEnabled(true);
				txtNama_Pelanggan.requestFocus ();
			    }
			else 
				{
				/* Jika Tidak Ada Kode Pelanggan di Tabel Pelanggan */
				btnAdd.setEnabled(true);
				btnEdit.setEnabled(false);
				btnDelete.setEnabled(false);
				txtNama_Pelanggan.requestFocus ();
			    }
   			rs1.close();
   			con1.close();
		}
		catch(SQLException e) 
		{
		}
	}

	/* Fungsi Tambah Data Ke Tabel Pelanggan */
	void Add()
		{
		try	
			{
			Connect ObjKoneksi1 = new Connect();
	   		Connection con1 = ObjKoneksi1.OpenConnect();
	   		Statement st1 = con1.createStatement();
	   		String sql1 = "insert into Pelanggan(Kode_Pelanggan,Nama_Pelanggan,Alt_Pelanggan,Tlp_Pelanggan) values('"+txtKode_Pelanggan.getText()+
	   			"','"+txtNama_Pelanggan.getText()+
	   			"','"+txtAlt_Pelanggan.getText()+
	   			"','"+txtTlp_Pelanggan.getText()+"')";
	   		int rows1 = st1.executeUpdate(sql1);
			if (rows1 == 1)
  	    		JOptionPane.showMessageDialog(this, "Sukses Di Tambahkan!!!");
			con1.close();
		    }
		catch(SQLException e) 
			{
		    }
     	}
	
	/* Fungsi Edit Data Ke Tabel Pelanggan */	
	void Edit()
		{
		try	
			{
			Connect ObjKoneksi1 = new Connect();
	   		Connection con1 = ObjKoneksi1.OpenConnect();
	   		Statement st1 = con1.createStatement();
	   		
	   		String sql1 = "update Pelanggan set Nama_Pelanggan='"+txtNama_Pelanggan.getText()+
	   			"',Alt_Pelanggan='"+txtAlt_Pelanggan.getText()+
	   			"',Tlp_Pelanggan='"+txtTlp_Pelanggan.getText()+
	   			"' where Kode_Pelanggan='"+txtKode_Pelanggan.getText()+"' ";
    		int rows1 = st1.executeUpdate(sql1);
 			if (rows1 == 1)
  	    		JOptionPane.showMessageDialog(this, "Sukses Di Edit!!!");
			con1.close();
		    }
		catch(SQLException e) 
			{
		    }
	    }

	/* Fungsi Hapus Data Ke Tabel Pelanggan */
	void Delete()
		{
		try	
			{
	   		Connect ObjKoneksi1 = new Connect();
	   		Connection con1 = ObjKoneksi1.OpenConnect();
	   		Statement st1 = con1.createStatement();
	   		String sql1 = "delete from Pelanggan where Kode_Pelanggan='"+txtKode_Pelanggan.getText()+"' ";		   		
			int rows1 = st1.executeUpdate(sql1);
 			if (rows1 == 1)
  	    		JOptionPane.showMessageDialog(this, "Sukses Di Hapus!!!");
 			con1.close();
		    }
		catch(SQLException e) 
			{
		    }
	    }
   
	/* Fungsi Kosongkan Text */
	void Kosong () 
		{
		txtKode_Pelanggan.setText ("");
		txtNama_Pelanggan.setText ("");
		txtAlt_Pelanggan.setText ("");
		txtTlp_Pelanggan.setText("");
		btnAdd.setEnabled(false);
		btnEdit.setEnabled(false);
		btnDelete.setEnabled(false);
		txtKode_Pelanggan.requestFocus ();
	}
}	